package edu.pe.cayetano.model.bo;

import java.util.ArrayList;

import org.apache.commons.beanutils.DynaBean;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.dao.ServicioDAO;
import edu.pe.cayetano.framework.BusinessException;
import edu.pe.cayetano.model.bean.OrdenServicioDetalleBean;
import edu.pe.cayetano.model.bean.PlanTratamientoDetalleBean;
import edu.pe.cayetano.model.bean.ServicioBean;
import edu.pe.cayetano.util.Utilitario;

public class ServicioBO  extends BaseBO{

	/**
	 * Metodo que devuelve el listado de servicio por especialidad disponibles para ordenes de servicio
	 * */
	public BResult getServiciosxToxOS(DynaBean dyna) throws BusinessException{
		
		BResult 					ret						= new BResult();
		ArrayList<ServicioBean> 	listadoServicios	 	= new ArrayList<ServicioBean>();
		
		try{
			conectar();
			ServicioDAO 	servicioDAO = new ServicioDAO(conn);
			listadoServicios = servicioDAO.getServiciosxToxOS((String)Utilitario.getPropertyDynaBean(dyna, "cboEspecialidad"));
			ret.setObject(listadoServicios);
		}catch(Exception e){
			ret.setException(e);
		}finally{
			try{
				desconectar();
			}catch(Exception e){
			}
		}
		return ret;
	}
	
	/**
	 * Metodo que busca un servicio de acuerdo al codigo de especialidad
	 * */
	public BResult getServiciosxEspecialidadesxSedes(int cboEspecialidad) throws BusinessException{
		
		BResult 					ret						= new BResult();
		ArrayList<ServicioBean> 	listadoServicios	 	= new ArrayList<ServicioBean>();
		try{
			conectar();
			ServicioDAO 	servicioDAO = new ServicioDAO(conn);
			listadoServicios = servicioDAO.getServiciosxEspecialidadesxSedes(String.valueOf(cboEspecialidad));
			ret.setObject(listadoServicios);
		}catch(Exception e){
			ret.setException(e);
		}finally{
			try{
				desconectar();
			}catch(Exception e){
			}
		}
		return ret;
	}
	
	/**
	 * Metodo que busca un servicio de acuerdo al codigo de especialidad
	 * */
	public BResult getServiciosxEspecialidadesxSedes(DynaBean dyna) throws BusinessException{
		
		BResult 					ret						= new BResult();
		ArrayList<ServicioBean> 	listadoServicios	 	= new ArrayList<ServicioBean>();
		try{
			conectar();
			ServicioDAO 	servicioDAO = new ServicioDAO(conn);
			listadoServicios = servicioDAO.getServiciosxEspecialidadesxSedes((String)Utilitario.getPropertyDynaBean(dyna, "cboEspecialidad"));
			ret.setObject(listadoServicios);
		}catch(Exception e){
			ret.setException(e);
		}finally{
			try{
				desconectar();
			}catch(Exception e){
			}
		}
		return ret;
	}
	
	/**
	 * Metodo que busca un servicio de acuerdo al codigo de especialidad 
	 * */
	public BResult buscaServicioxEspecialidad(String cboEspecialidad) throws BusinessException{
		
		BResult 					ret				= new BResult();
		PlanTratamientoDetalleBean	detalleTO	    = new PlanTratamientoDetalleBean();
		try{
			conectar();
			ServicioDAO 	servicioDAO = new ServicioDAO(conn);
			detalleTO = servicioDAO.buscaServicioxEspecialidad(String.valueOf(cboEspecialidad));
			ret.setObject(detalleTO);
		}catch(Exception e){
			ret.setException(e);
		}finally{
			try{
				desconectar();
			}catch(Exception e){
			}
		}
		return ret;
	}
	
	/**
	 * Metodo que busca un servicio de acuerdo al codigo de especialidad 
	 * */
	public BResult buscaDetalleCompletoServicio(DynaBean dyna) throws BusinessException{
		
		BResult 						ret				= new BResult();
		OrdenServicioDetalleBean		servicioTO		= new OrdenServicioDetalleBean();	
		try{
			conectar();
			ServicioDAO 				servicioDAO = new ServicioDAO(conn);
			servicioTO = servicioDAO.buscaDetalleCompletoServicio(
					(String)Utilitario.getPropertyDynaBean(dyna, "cboSede"),
					(String)Utilitario.getPropertyDynaBean(dyna, "cboEspecialidad"),
					(String)Utilitario.getPropertyDynaBean(dyna, "cboServicio")
					);
			ret.setObject(servicioTO);
		}catch(Exception e){
			ret.setException(e);
		}finally{
			try{
				desconectar();
			}catch(Exception e){
			}
		}
		return ret;
	}
}
